package com.yuandian.ops.workbench.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuandian.ops.workbench.po.AlarmListParams;
import com.yuandian.ops.workbench.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 系统健康度top
 *
 * @Author LinShiHe
 * @Date 2021/07/02
 */
@Mapper
public interface DevOpsHomePageMapper {

	/**
	 * 查询监控概况
	 * @return 监控概况vo对象
	 */
	MonitorOverviewVo queryRecentMonitorOverview(@Param("params") AlarmListParams params);

    /**
     * 运维工作台首页 查询系统健康度Top
     * @param page 分页参数
     * @param params 请求参数
     * @return
     */

    List<RecentHealthRateTopVo> getSysHealthRateTop(Page<RecentHealthRateTopVo> page, @Param("params") AlarmListParams params);

    /**
     * 查询系统健康度TOP5的业务
     * @return
     */
    List<RecentHealthRateTop5Vo> selectBusinessHealthTop5(@Param("params") AlarmListParams params);

    /**
     * 查询系统受理量、告警量趋势
     * @return
     */
    List<CompleteAlarmTrendVo> queryCompleteAlarmTrend(@Param("params") AlarmListParams params);



    /**
     * 查询区域业务统计
     * @param params 查询业务告警信息相关数据请求对象
     * @return 区域业务统计vo对象集合
     */
    List<AreaBusinessStatisticsVo> queryAreaBusinessStatistics(@Param("params") AlarmListParams params);

    /**
     * 查询区域业务统计（地图）
     * @param params 查询业务告警信息相关数据请求对象
     * @return 区域业务统计vo对象集合
     */
    List<AreaBusinessStatisticsVo> queryMapAreaBusinessStatistics(@Param("params") AlarmListParams params);

    /**
     * 查询最新健康度告警统计数
     * @return
     */
    RecentHealthRateAlarmCountVo getRecentHealthRateAlarmCount(@Param("params") AlarmListParams params);


    /**
     * 查询业务
     * @return
     */
    List<BusinessAlarmTopVo> getBusinessListHealth(@Param("params") AlarmListParams params);

    /**
     * 查询业务告警TOP5
     * @return
     */
    List<BusinessAlarmTopVo> getBusinessListAlarm(@Param("params") AlarmListParams params);

    /**
     * 查询'健康度低'最新告警周期的数据
     * @param idList
     * @return
     */
    List<RecentHealthRateTopVo> getNewestSysHealthRateTop(@Param("idList") List<String> idList);
}
